package webapp;

import java.io.IOException;
import java.io.InputStream;

import javax.naming.spi.ObjectFactory;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import webapp.lib.Request;
import webapp.lib.Response;
import webapp.lib.WSInterface;

public class CoVServlet extends HttpServlet {
	/**
	 * Volgens mij is dit de bedoeling
	 * Op de een of andere manier kent mijn Eclipse niet javax.servlet.*;
	 * 
	 */
	
	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		super.doPut(httpServletRequest, httpServletResponse);
		InputStream is = httpServletRequest.getInputStream();
		JAXBContext jaxbContext;
		
		try {
			jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage().getName());
			Object webserviceResponse;
			Unmarshaller unmarshaller = null;
			
			try {
				unmarshaller = jaxbContext.createUnmarshaller();
				Request serviceRequest = (Request) unmarshaller.unmarshal(is);
				WSInterface webserviceEndpoint = new CoVImpl();
				Response result = webserviceEndpoint.checkCoV(serviceRequest);
				webserviceResponse = result;
			} catch(JAXBException e) {
				throw new ServletException("Er ging iets mis bij het unmarshallen van het request.", e);
			}
			
			try {
				Marshaller marshaller = jaxbContext.createMarshaller();
				marshaller.marshal(webserviceResponse, httpServletResponse.getWriter());
			} catch(JAXBException e) {
				throw new ServletException("Er ging iets mis bij het marshallen van de respons.", e);
			}
		} catch(JAXBException e) {
			throw new ServletException("Er ging iets mis bij de jaxbContext.", e);
		}
	}
}
